www.gusucode.com > VC++ 自制SQL数据库,含有服务端+客户端-源码程序 > VC++ 自制SQL数据库,含有服务端+客户端-源码程序/code/Server/miniSQLDoc.cpp
//Download by http://www.NewXing.com // miniSQLDoc.cpp : implementation of the CMiniSQLDoc class // #include "stdafx.h" #include "miniSQL.h" #include "miniSQLDoc.h" #include "miniSQLView.h" #include "StepExec.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMiniSQLDoc IMPLEMENT_DYNCREATE(CMiniSQLDoc, CDocument) BEGIN_MESSAGE_MAP(CMiniSQLDoc, CDocument) //{{AFX_MSG_MAP(CMiniSQLDoc) ON_COMMAND(ID_OP_EXEC, OnOpExec) ON_COMMAND(ID_OP_STEP_EXEC, OnOpStepExec) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMiniSQLDoc construction/destruction CMiniSQLDoc::CMiniSQLDoc() { memset(&m_lf, 0, sizeof(m_lf)); m_lf.lfWeight = FW_NORMAL; m_lf.lfCharSet = DEFAULT_CHARSET; m_lf.lfOutPrecision = OUT_DEFAULT_PRECIS; m_lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; m_lf.lfQuality = DEFAULT_QUALITY; m_lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; strcpy(m_lf.lfFaceName, "宋体"); } CMiniSQLDoc::~CMiniSQLDoc() { } BOOL CMiniSQLDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; ((CCrystalEditView* )m_viewList.GetHead())->SetWindowText(""); m_TextBuffer.InitNew(); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMiniSQLDoc serialization void CMiniSQLDoc::Serialize(CArchive& ar) { CCrystalEditView* pView = (CCrystalEditView*)m_viewList.GetHead(); ASSERT_VALID(pView); ASSERT_KINDOF(CCrystalEditView, pView); if (ar.IsStoring()) { } else { } ASSERT_VALID(this); } ///////////////////////////////////////////////////////////////////////////// // CMiniSQLDoc diagnostics #ifdef _DEBUG void CMiniSQLDoc::AssertValid() const { CDocument::AssertValid(); } void CMiniSQLDoc::Dump(CDumpContext& dc) const { CDocument::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMiniSQLDoc commands BOOL CMiniSQLDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; return m_TextBuffer.LoadFromFile(lpszPathName); } BOOL CMiniSQLDoc::OnSaveDocument(LPCTSTR lpszPathName) { return m_TextBuffer.SaveToFile(lpszPathName); } void CMiniSQLDoc::DeleteContents() { CDocument::DeleteContents(); m_TextBuffer.FreeAll(); } void CMiniSQLDoc::OnOpExec() { CMiniSQLView* pView = (CMiniSQLView *)m_viewList.GetHead(); ASSERT_VALID( pView ); ASSERT_KINDOF( CMiniSQLView, pView ); CString str; if( m_TextBuffer.GetLineCount () > 0 ) // && (m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1) >0) ) m_TextBuffer.GetText(0,0,m_TextBuffer.GetLineCount ()-1, m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1),str); else str = _T(""); CStepExec* pExec = new CStepExec( str ); try { pExec->Exec(); } catch( Error& e ) { Message( e.GetErrStr() ); pView->SetSelection( CPoint( 0, pExec->LineNo()-1 ), CPoint( m_TextBuffer.GetLineLength( pExec->LineNo()-1 ), pExec->LineNo()-1 ) ); delete pExec; return ; } } void CMiniSQLDoc::OnOpStepExec() { CMiniSQLView* pView = (CMiniSQLView *)m_viewList.GetHead(); ASSERT_VALID( pView ); ASSERT_KINDOF( CMiniSQLView, pView ); CString str; if( m_TextBuffer.GetLineCount () > 0 ) // && (m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1) >0) ) m_TextBuffer.GetText(0,0,m_TextBuffer.GetLineCount ()-1, m_TextBuffer.GetLineLength(m_TextBuffer.GetLineCount ()-1),str); else str = _T(""); CStepExec* pExec = new CStepExec( str ); try { pExec->SingleExec(); } catch( Error& e ) { Message( e.GetErrStr() ); pView->SetSelection( CPoint( 0, pExec->LineNo()-1 ), CPoint( m_TextBuffer.GetLineLength( pExec->LineNo()-1 ), pExec->LineNo()-1 ) ); delete pExec; return ; } }